package com.jie.server.modules.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jie.server.common.domain.TreeSelect;
import com.jie.server.modules.system.entity.AreaEntity;
import com.jie.server.modules.system.entity.Menu;
import com.jie.server.modules.system.vo.AreaExcelVo;
import com.jie.server.modules.system.vo.AreaResultVo;

import java.util.List;

/**
 * @description: 行政区划 服务类
 * @author: xiaojie
 * @since: 2024/12/18 0018
 */
public interface IAreaService extends IService<AreaEntity> {

    /**
     * 查询省市区表
     * @param areaId 省市区表主键
     * @return 省市区表
     */
    AreaEntity selectAreaByAreaId(Long areaId);

    /**
     * 查询省市区表列表
     * @param areaEntity 省市区表
     * @return 省市区表集合
     */
    List<AreaEntity> selectAreaList(AreaEntity areaEntity);

    /**
     * 新增省市区表
     * @param areaEntity 省市区表
     * @return 结果
     */
    boolean create(AreaEntity areaEntity);

    /**
     * 修改省市区表
     * @param areaEntity 省市区表
     * @return 结果
     */
    boolean update(AreaEntity areaEntity);

    /**
     * 批量删除省市区表
     *
     * @param areaIds 需要删除的省市区表主键集合
     * @return 结果
     */
    int deleteAreaByAreaIds(Long[] areaIds);

    /**
     * 删除省市区表信息
     *
     * @param areaId 省市区表主键
     * @return 结果
     */
    int deleteAreaByAreaId(Long areaId);

    /**
     * 获取省份列表
     * @param type 区域类型
     * @param parentId 上级id
     * @return 结果
     */
    List<AreaResultVo> getAreaListByTypeAndParentId(Integer type, Long parentId);

    /**
     * 获取市、区县列表
     * @param type 区域类型
     * @param name 名称
     * @param parentName 上级名称
     * @return 结果
     */
    List<AreaResultVo> getAreaListByTypeAndParentName(Integer type, String name, String parentName);

    /**
     * 构建前端所需要下拉树结构
     * @param areas 行政区划列表
     * @return 下拉树结构列表
     */
    List<TreeSelect> buildAreaTreeSelect(List<AreaEntity > areas);

    List<AreaExcelVo> listExprot();

}
